home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 551-575 / disk_573 / mtoollibrary / tool.h < prev    next >
C/C++ Source or Header  |  1992-05-06  |  10KB  |  288 lines

  1.  #include <exec/types.h>
  2.  
  3.  #include <intuition/intuition.h>
  4.  #include <proto/exec.h>
  5.  #include <proto/dos.h>
  6.  #include <proto/mathieeedoubbas.h>
  7.  #include <proto/mathieeedoubtrans.h>
  8.  #include <proto/intuition.h>
  9.  #include <proto/graphics.h>
  10.  #include <math.h>
  11.  
  12.  #define Sgn(a)        IEEEDPFlt(IEEEDPTst(a))
  13.  #define sgn(a)        IEEEDPFlt(IEEEDPTst(a))
  14.  #define ASinh(a)    Log(arg+Sqr(arg*arg+1))
  15.  
  16.  #define E   2.718281828
  17.  #define PPI 3.14159265358979323846
  18.  
  19.  #define Mul(a,b) IEEEDPMul(a,b)
  20.  #define Add(a,b) IEEEDPAdd(a,b)
  21.  #define Sub(a,b) IEEEDPSub(a,b)
  22.  #define Div(a,b) IEEEDPDiv(a,b)
  23.  #define Flt(a)   IEEEDPFlt(a)
  24.  #define Fix(a)   IEEEDPFix(a)
  25.  #define Cmp(a,b) IEEEDPCmp(a,b)
  26.  #define Abs(a)   IEEEDPAbs(a) 
  27.  #define Neg(a)   IEEEDPNeg(a)
  28.  #define Pow(a,b) IEEEDPPow(a,b)
  29.  #define Tst(a)   IEEEDPTst(a)
  30.  #define Log10(a) IEEEDPLog10(a)
  31.  #define Floor(a) IEEEDPFloor(a)
  32.  #define ACos(a)  IEEEDPAcos(a)
  33.  #define ASin(a)  IEEEDPAsin(a)
  34.  #define ATan(a)  IEEEDPAtan(a)
  35.  #define Sin(a)   IEEEDPSin(a)
  36.  #define Cos(a)   IEEEDPCos(a)
  37.  #define Tan(a)   IEEEDPTan(a)
  38.  #define Log(a)   IEEEDPLog(a)
  39.  #define Sqr(a)   IEEEDPSqrt(a)
  40.  
  41.  struct info 
  42.   {
  43.    USHORT code;
  44.    struct IntuiMessage *Nachricht;
  45.    ULONG NachrichtenArt;
  46.    APTR IAddress;
  47.    SHORT MouseX,MouseY;
  48.   };
  49.  
  50.  struct MToolBase
  51.   {
  52.    struct Library Node;
  53.    LONG   SegList;
  54.    struct Library *SysBase;
  55.    struct GfxBase *GfxBase;
  56.    struct IntuitionBase *IntuitionBase;
  57.    struct Library *MathIeeeDoubBasBase;
  58.    struct Library *MathIeeeDoubTransBase;
  59.   };
  60.  
  61.  struct Block 
  62.   {
  63.    LONG Links,Rechts;
  64.    LONG RechenArt,Valid;
  65.    LONG Konstante;
  66.    LONG Fehler;
  67.    char *String;
  68.    DOUBLE Wert;
  69.    struct Block *Left,*Right;
  70.   };
  71.  
  72.  
  73.  struct Konstanten 
  74.   {
  75.    DOUBLE k1,k2,k3,k4;
  76.   };
  77.  
  78.  
  79.  
  80.  /* Fehlercodes */
  81.  
  82.  #define DIVBYZERO  1 /* Es wurde durch 0 geteilt                         */
  83.  #define LOGNEG     2 /* Es wurde von Zahl <= 0 der Log gebildet          */
  84.  #define SQRTNEG    4 /* Es wurde von Zahl <0   die Wurzel gebildet       */
  85.  #define ATRIG      8 /* Es wurde von Zahl >1 oder <-1 asin/acos gebildet */
  86.  #define UNPAKLAM  16 /* Unpaarige Klammern                               */
  87.  #define TEST      32
  88.  #define NOFUNC    64 /* Keine Funktion eingegeben                        */
  89.  #define NO_KONST 128 /* Keine solche Konstante                           */
  90.  #define NO_MEM   256 /* Kein Speicher für weiteren Block                 */
  91.  #define POWERROR 512 /* Negative Zahl hoch Bruch wurde versucht          */
  92.  #define NO_FUNC 1024 /* Keine Funktion gefunden                          */
  93.  
  94.  /* Rechenarten */
  95.  #define ADDI    1
  96.  #define SUBT    2
  97.  #define MULT    3
  98.  #define DIVI    4
  99.  #define POWE    5
  100.  #define SINU    6
  101.  #define COSI    7
  102.  #define TANG    8
  103.  #define ASIN    9
  104.  #define ACOS    10
  105.  #define ATAN    11
  106.  #define LOG1    12
  107.  #define LNAT    13
  108.  #define ABSO    14
  109.  #define SIGU    15
  110.  #define SQRT    16
  111.  #define FLOO    17
  112.  #define X    18
  113.  #define MKON    19    /* Math. Konstante */
  114.  #define UKON    20    /* User  Konstante */
  115.  #define ZIFF    21    /* Ziffern         */
  116.  #define KLAM    22
  117.  
  118.  VOID Print(struct RastPort *RP,
  119.             char *text,
  120.             LONG col,
  121.             LONG xpos,
  122.             LONG ypos);
  123.  ULONG EventAbfrage(struct Window *Window,
  124.                     struct info *MsgInfo);
  125.  LONG request(char *JaPointer,
  126.               char *NeinPointer,
  127.               char *BodyPointer);
  128.  VOID Fak(DOUBLE *Ziel, LONG i);
  129.  VOID NuK(DOUBLE *Ziel,LONG n,LONG k);
  130.  VOID Free_Block(struct Block *First);
  131.  VOID Free_Konst(APTR Zeiger);
  132.  APTR Init_Konst(VOID);
  133.  LONG Set_Konst_P(APTR Zeiger,LONG Nummer,DOUBLE *Wert_P);
  134.  struct Block *Init_Mem(char *string);
  135.  LONG Init_Block(struct Block *Zeiger);
  136.  LONG check(LONG z1,LONG z2,
  137.             LONG l, LONG r,
  138.             char *string);
  139.  LONG checkback(LONG z1,LONG z2,
  140.                 LONG l, LONG r,
  141.                 char *string);
  142.  VOID copy(LONG i, LONG Anzahl,
  143.            char *Ziel,char *Source);
  144.  LONG PreCalc(struct Block *Zeiger,APTR Konst);
  145.  VOID GetKonst_P(DOUBLE *Ziel,APTR Konst,LONG Nummer);
  146.  DOUBLE GetKonst(APTR Konst,LONG Nummer);
  147.  LONG Calc_P(DOUBLE *Ziel,
  148.              struct Block *Zeiger,
  149.              DOUBLE *x);
  150.  LONG AnzahlKlammern(char *string);
  151.  VOID berechnen(DOUBLE *Ziel,
  152.                 UBYTE *string,
  153.                 DOUBLE *var,
  154.                 struct Konstanten *kon,
  155.                 LONG *Fehler);
  156.  VOID left(char *Ziel,
  157.            char *string,
  158.            LONG Anzahl);
  159.  VOID right(char *Ziel,
  160.             char *string,
  161.             LONG Anzahl);
  162.  VOID mid(char *Ziel,
  163.           char *string,
  164.           LONG Anfang,
  165.           LONG Anzahl);
  166.  VOID UmwStoF(DOUBLE *Ziel,
  167.               char *string);
  168.  VOID UmwFtoS(char *Ziel,
  169.               DOUBLE *Zahl1,
  170.               LONG Nachkomma);
  171.  LONG NewRequest(struct Window *AktWindow,
  172.                  char *JaPointer,
  173.                  char *NeinPointer,
  174.                  char *BodyPointer);
  175.  VOID Box(struct RastPort *RastPort,        /* Der RastPort */
  176.           LONG xs,                          /* Start: X     */
  177.           LONG ys,                          /* Start: Y     */
  178.           LONG xe,                          /* Ende : X     */
  179.           LONG ye);                         /* Ende : Y     */
  180.  VOID Center(struct Window *Window,         /* Das Fenster  */
  181.              char *string,                  /* Der Text     */
  182.              LONG Color,                    /* Die Farbe    */
  183.              LONG y_Pos);                    /* Die Y-Pos.   */
  184.  VOID Gadget_On(struct Gadget *Gadget,      /* Das Gadget   */
  185.                 struct Window *Window);     /* Das Fenster  */
  186.  VOID Gadget_Off(struct Gadget *Gadget,     /* Das Gadget   */
  187.                  struct Window *Window);    /* Das Fenster  */
  188.  LONG GetPropPosH(struct Gadget *Gadget,    /* Das Gadget   */
  189.                   LONG MaxPos);             /* Max. Pos.    */
  190.  LONG GetPropPosV(struct Gadget *Gadget,    /* Das Gadget   */
  191.                   LONG MaxPos);             /* Max. Pos.    */
  192.  VOID SetPropPosH(struct Gadget *Gadget,    /* Das Gadget   */
  193.                   struct Window *Window,
  194.                   LONG MaxPos,              /* Die MaxPos   */
  195.                   LONG Schrittweite,        /* Schrittweite */
  196.                   LONG NewPos);             /* Neue Posit.  */
  197.  VOID SetPropPosV(struct Gadget *Gadget,    /* Das Gadget   */
  198.                   struct Window *Window,
  199.                   LONG MaxPos,              /* Die MaxPos   */
  200.                   LONG Schrittweite,        /* Schrittweite */
  201.                   LONG NewPos);             /* Neue Posit.  */
  202.  LONG PrepareTmpRas(struct RastPort *RP);    /* Der RastPort */
  203.  VOID ClearTmpRas(struct RastPort *RP);      /* Der RastPort */
  204.  LONG PrepareArea(struct RastPort *RP,
  205.                   LONG MaxPoints);
  206.  VOID ClearArea(struct RastPort *RP);
  207.  struct Menu *LastMenu(struct Menu *menu);
  208.  struct MenuItem *LastItem(struct Menu *menu);
  209.  struct MenuItem *LastSub(struct Menu *menu);
  210.  struct Menu *AddMenu(struct Menu *menu,
  211.                       char *Titel,
  212.                       USHORT Flags);
  213.  struct Item *AddItem(struct Menu *menu,
  214.                       char *Titel,
  215.                       USHORT Flags,
  216.                       char HotKey);
  217.  struct Item *AddSub(struct Menu *menu,
  218.                      char *Titel,
  219.                      USHORT Flags,
  220.                      char HotKey);
  221.  struct MenuItem *GetItem(struct Menu *menu,
  222.                           char *Titel,
  223.                           USHORT Flags,
  224.                           char HotKey);
  225.  VOID ClearMenu(struct Menu *menu);
  226.  struct MenuItem *FreeItem(struct MenuItem *item);
  227.  struct Menu *FreeMenu(struct Menu *menu);
  228.  VOID NewSetMenuStrip(struct Window *Window,
  229.                       struct Menu *menu);
  230.  
  231.  
  232.  
  233.  
  234.  #pragma libcall MToolBase left 1e 9803
  235.  #pragma libcall MToolBase right 24 9803
  236.  #pragma libcall MToolBase mid 2a 109804
  237.  #pragma libcall MToolBase UmwFtoS 30 9803
  238.  #pragma libcall MToolBase copy 36 321004
  239.  #pragma libcall MToolBase check 3c 8321005
  240.  #pragma libcall MToolBase checkback 42 8321005
  241.  #pragma libcall MToolBase AnzahlKlammern 48 801
  242.  #pragma libcall MToolBase request 4e 21003
  243.  #pragma libcall MToolBase NewRequest 54 210804
  244.  #pragma libcall MToolBase EventAbfrage 5a 9802
  245.  #pragma libcall MToolBase Print 60 2108905
  246.  #pragma libcall MToolBase Box 66 3210905
  247.  #pragma libcall MToolBase Center 6c 108904
  248.  #pragma libcall MToolBase Gadget_On 72 9802
  249.  #pragma libcall MToolBase Gadget_Off 78 9802
  250.  #pragma libcall MToolBase GetPropPosH 7e 802
  251.  #pragma libcall MToolBase GetPropPosV 84 802
  252.  #pragma libcall MToolBase SetPropPosH 8a 2109805
  253.  #pragma libcall MToolBase SetPropPosV 90 2109805
  254.  #pragma libcall MToolBase PrepareTmpRas 96 901
  255.  #pragma libcall MToolBase ClearTmpRas 9c 901
  256.  #pragma libcall MToolBase PrepareArea a2 902
  257.  #pragma libcall MToolBase ClearArea a8 901
  258.  #pragma libcall MToolBase UmwStoF ae 9802
  259.  #pragma libcall MToolBase Fak b4 802
  260.  #pragma libcall MToolBase NuK ba 10803
  261.  #pragma libcall MToolBase berechnen c0 3210805
  262.  #pragma libcall MToolBase Init_Konst c6 0
  263.  #pragma libcall MToolBase Init_Mem cc 801
  264.  #pragma libcall MToolBase Init_Block d2 801
  265.  #pragma libcall MToolBase Set_Konst_P d8 10803
  266.  #pragma libcall MToolBase GetKonst_P de 19803
  267.  #pragma libcall MToolBase PreCalc e4 1002
  268.  #pragma libcall MToolBase Calc_P ea a9803
  269.  #pragma libcall MToolBase Free_Konst f0 801
  270.  #pragma libcall MToolBase Free_Block f6 801
  271.  #pragma libcall MToolBase CreatePort fc 802
  272.  #pragma libcall MToolBase DeletePort 102 801
  273.  #pragma libcall MToolBase CreateExtIO 108 802
  274.  #pragma libcall MToolBase DeleteExtIO 10e 802
  275.  #pragma libcall MToolBase CreateStdIO 114 801
  276.  #pragma libcall MToolBase DeleteStdIO 11a 801
  277.  #pragma libcall MToolBase LastMenu 120 801
  278.  #pragma libcall MToolBase LastItem 126 801
  279.  #pragma libcall MToolBase LastSub 12c 801
  280.  #pragma libcall MToolBase AddMenu 132 9803
  281.  #pragma libcall MToolBase AddItem 138 109804
  282.  #pragma libcall MToolBase AddSub 13e 109804
  283.  #pragma libcall MToolBase GetItem 144 109804
  284.  #pragma libcall MToolBase ClearMenu 14a 801
  285.  #pragma libcall MToolBase FreeItem 150 801
  286.  #pragma libcall MToolBase FreeMenu 156 801
  287.  #pragma libcall MToolBase NewSetMenuStrip 15c 8902
  288.